Advanced REST Client
Description
Advanced REST Client is an entry in the Utility Plugin for Process Studio Workflows. The REST Client process entry enables you to consume RESTful services by making REST calls. It is an extension of the entry 'REST Client' with more feature such as:
- Authenticated Proxy Support
- Option to ignore SSL certificate validation
- Request Timeout
- Form-data request body along with file upload by providing file path
- Ability to read HTTP Response headers
- Ability to test REST API
Limitations:
-
Parameters: Process Studio variables, parameters and field names should never be same as Parameter Key irrespective of case (upper case or lower case) when we are using Advanced REST Client plugin.
-
Apache HttpClient URL Validation Rule for Invalid Percent Sequences:
Apache HttpClient strictly validates URLs according to RFC 3986 (Uniform Resource Identifier) specification.Rule: A percent-encoded character must follow the pattern %XX where XX are exactly two hexadecimal digits (0-9, A-F, a-f).
Valid hex digits: 0 1 2 3 4 5 6 7 8 9 A B C D E F a b c d e f
URL:
https://dev354764.service-now.com/api/now/table/incident?sysparm_query=short_descriptionLIKEReport%Success@2025 #Final$
In above URL, there a sequence "%Su"
Problem with %Success:
The sequence %Su is parsed as an attempted percent-encoding.
- S and u are NOT valid hexadecimal digits.
- Apache HttpClient throws URISyntaxException: Illegal character or validation error
Example:
| Input | Valid? | Reason |
|---|---|---|
| %20 | Yes | 2 and 0 are hex digits (represents space) |
| %2F | Yes | 2 and F are hex digits (represents /) |
| %Success | No | S is not a hex digit |
| %25Success | Yes | %25 decodes to %, result is %Success |
Reference: RFC 3986, Section 2.1 - Percent-Encoding
A percent-encoded octet is encoded as a character triplet, consisting of the percent character "%" followed by the two hexadecimal digits representing that octet's numeric value.
Configurations
| Field Name | Description |
|---|---|
| Process entry name | Specify the name of the entry as it appears in the workflow workspace. This name must be unique in a single workflow. |
| HTTP Request section: | |
| HTTP Method | Choose how the process entry interacts with a resource--- HTTP Method options are either GET, PUT, DELETE, POST, HEAD, OPTIONS (Read Only) or PATCH. The field accepts variable or static values. |
| URL | Specify the path to a REST resource (HTTP URL). The field accepts variable or static values. |
| AutomationEdge Server Rest API | Select the checkbox when the request targets the AutomationEdge Server REST API. The process entry rejects requests to any other address. The process entry calls the AutomationEdge Server REST APIs without storing user credentials in the workflow. The call runs under the identity of the user that the workflow executes on behalf of: • Agent execution: the call succeeds only if the owner of the workflow request has access to the called API. • Process Studio execution: the call succeeds only if the signed-in Process Studio user has access to the called API. The process entry uses the existing Process Studio session. Compatibility: Requires AutomationEdge Server 5.1.x or later, and Process Studio 8.5.1 or later with the matching agent. On older versions the option stays disabled. Notes: • Don't add the user session header (X-session-token) on the Headers tab. If you add the header, the process entry uses the token in the header, and the call runs under the corresponding user session instead • Rate limits apply. Agent calls count against the request owner user and tenant limits; Process Studio calls count against the PS user limits. Exceeding a limit returns HTTP 429. • If the identity has no access, the call returns a generic HTTP 403. The detailed reason appears only in the server log and the audit. • During server maintenance the call fails with HTTP 503, as other users and agent API traffic do. • The server records the source, the agent name, and the owner of every call in the audit log. |
Settings Tab: Enter basic connection information for accessing a resource.
| Field Name | Description |
|---|---|
| General section: | |
| Request timeout in seconds (default 60) | The time to establish the connection with the remote host. Default Value: 60 |
| Retry configuration section: | Use to set up automatic retries for failed API calls. Temporary network instability or server capacity constraints often cause intermittent errors, such as Request Timeout, Bad Gateway, or Connection Refused. A retry mechanism helps the process entry recover from temporary failures automatically and reduces manual intervention. |
| Retry on Status Codes | Specify the HTTP error codes that trigger an automatic retry. Specify multiple status codes separated by commas, for example: 408, 502, 503, 504. The feature resolves temporary network instability or server capacity issues automatically. Click the info icon next to the field to view the list of codes that you cannot use in the field. Note: Use only error codes and note success code (for example 200), else process entry shows an error. |
| Max Retries | Specify the maximum number of times the process entry attempts to resend the failed API request. Allowed Range Value: 0 to 10 Default Value: 3 |
| Retry Delay (ms) | Specify the wait time in milliseconds between each retry attempt. Allowed Range Value: 100 to 300000 Default Value: 1000 |
| SSL Configuration section: | Provide authentication details for accessing a resource that requires SSL certificate authentication. |
| Ignore SSL certificate verification? | Enable this checkbox to ignore SSL certificate verification while making HTTPS connection. This strategy entirely ignores trust store certificate checking which makes it insecure and is only to be used where required. |
| Trust store file | Specify trust store file path in case of HTTPS connection. OR Click Browse to select trust store file from local machine. |
| Trust store password | Specify trust store password in case of HTTPS connection |
| Key store file | Specify the key store file path (in PKCS#12 format after you've combined your certificate and private key). OR Click Browse to select key store file from local machine. It contains your client's certificate and private key. Key store file is used for mutual TLS authentication to prove the client's identity to the server. Please note that this is an optional field. |
Parameters Tab: This tab contains table with three columns to provide request (URL) parameters
| Field Name | Description |
|---|---|
| Parameter Key | Specify the Request parameter keys to set value. |
| Parameter Value | Specify the value for the request parameter keys. |
| Description | Specify a description for the parameter. |
Authorization Tab: Enter authorization details for a resource in the Authorization tab.
| Field Name | Description |
|---|---|
| HTTP Authorization section: | |
| Type | Select the type of request authentication from the following options: • No Auth: No additional field details required to be specified. • Basic Auth • Bearer Token • OAuth 2.0 • NTLM Auth Note: Field options vary depending on the selection made. |
| Type: Basic Auth option fields | |
| Username | In case of Basic Authentication provide username. |
| Password | In case of Basic Authentication provide password. |
| Type: Bearer Token option fields | |
| Token | Specify the bearer token to send in the Authorization header. |
| Type: OAuth 2.0 option fields | Select the OAuth 2.0 type to configure new token. The fields in the Configuration Options and Advanced Options tab vary based on the selected grant type. |
| Configure New Token section: | |
| Grant Type | Select Client Credentials option to obtain the access token. |
| Configuration Options tab: | |
| Access Token URL | Specify the token endpoint URL from which the access token is requested. |
| Client ID | Specify the client identifier issued by the authorization server. |
| Client Secret | Specify the client secret issued by the authorization server. |
| Scope | Specify the scope(s) of access requested for the token. |
| Client Authentication | Select how the client credentials are sent to the token endpoint. For example, as a Basic Auth header or client credentials in the request body. |
| Advanced Options tab: | |
| Resource | Specify the target resource for which the token is requested, if required by the authorization server. |
| Audience | Specify the target resource for which the token is requested, if required by the authorization server. |
| OR | |
| Grant Type | Select Password Credentials option to obtain the access token. |
| Configuration Options tab: | |
| Access Token URL | Specify the token endpoint URL from which the access token is requested. |
| Client ID | Specify the client identifier issued by the authorization server. |
| Client Secret | Specify the client secret issued by the authorization server. |
| Username | Specify the username. |
| Password | Specify the password. |
| Scope | Specify the scope(s) of access requested for the token. |
| Client Authentication | Select how the client credentials are sent to the token endpoint. For example, as a Basic Auth header or client credentials in the request body. |
| Advanced Options tab: | |
| Audience | Specify the target resource for which the token is requested, if required by the authorization server. |
| Type: NTLM Auth option fields | Notes: • The process entry sends NTLM credentials only to the host and port that you specify in URL. If the server redirects the request to a different host, the process entry doesn't send the credentials to that host. • In the Test API window, NTLM appears as domain\username rather than as an Authorization header. NTLM exchanges credentials while it establishes the connection, so the process entry doesn't send a fixed header. |
| Username | In case of NTLM Auth provide username. Specify only the account name, for example jsmith, and not the domain-qualified form DOMAIN\jsmith. Note: The domain is specified separately in the Domain field. The field accepts static or variable value and the field is mandatory |
| Password | Specify the password to authentication with NTLM. The field accepts static or variable value. |
| Domain | Specify the Windows domain that the account belongs to, for example CORP. If the account is a local account on the target server rather than a domain account, specify the target computer name instead. This field is mandatory when NTLM Auth is selected. The field accepts static or variable value. |
| Workstation | This is an optional field. Specify the client computer name reported to the server. Most servers ignore this value, so leave it blank unless the target server requires it. The field accepts static or variable value. |
Headers(0) Tab:
This tab contains table with three columns to provide request headers.
| Field Name | Description |
|---|---|
| Header Key | Specify request header key. |
| Header Value | Specify request header value. |
| Description | Specify a description for header. |
Request Body Tab:
The tab has a group of radio buttons as follows:
| Field Name | Description |
|---|---|
| Request Body section: | |
| none | In case where request does not have a request body. |
| raw | Specify the raw Request Body as Text, HTML, XML, or JSON. Use template support in the request body to substitute environment variables/parameters using the ${variable} placeholder. |
| form-data | Enter Request body in tabular format in a form. Use form-data to send non-ASCII text or large binary data. |
| Key Type | Select form-data parameter key type (Text/File) from the dropdown list. |
| Key | Specify form-data parameter key. |
| Value | Specify form-data parameter value. When Key Type is File, use the file picker to select the file. |
| Description | Specify a description for the form-data parameter. |
| x-www-form-urlencoded | Enter Request body in tabular format in a form. Use x-www-form-urlencoded to send simple text/ASCII data. |
| Key | Specify a parameter key. |
| Value | Specify a parameter value. |
| Description | Specify a description for parameter. |
| read from file | In case where request body to be read from a file. |
| Content type for request body | Select the content type for the request body from the dropdown. |
| Filepath | Specify request body file path. Click Browse to select the request body file from the local machine. |
| View Request Body Contents | Click this button to view request body file contents |
| binary | In case where request body is to be read from a file. |
| GraphQL (Beta) | Specify a GraphQL query to read/fetch values, or a mutation to write/post values. Use GraphQL Variables to pass dynamic values separately. Use template support to substitute environment variables/parameters using the ${variable} placeholder. Note: When substituting a string value, enclose it in double quotes (""). Limitation: Subscription queries are not supported by ARC GraphQL. |
HTTP Response Tab: This tab has Output fields.
| Field Name | Description |
|---|---|
| Response Status | Specify a PS Variable to hold the HTTP Response status (for example, "200 OK"). The variable name must start with "Local." or "Global.". |
| Response code | Specify a PS Variable to hold the numeric HTTP response code returned by the API call (for example, 200, 404, 500). The variable name must start with "Local." or "Global.". |
| Response Time (milliseconds) | Specify a PS Variable to hold the HTTP Response time in milliseconds. The variable name must start with "Local." or "Global.". |
| Response Headers (JSON) | Specify a PS Variable to hold the HTTP Response headers in JSON format. The variable name must start with "Local." or "Global.". |
| Response Cookies (JSON) | Specify a PS Variable to hold the HTTP Response cookies in JSON format. The variable name must start with "Local." or "Global.". |
| Response Body | Specify a PS Variable to hold the HTTP Response body text, if any. The variable name must start with "Local." or "Global.". |
| Output File | Specify a PS Variable to hold the file path of the file received in the HTTP Response. The variable name must start with "Local." or "Global.". |
| Sanitize Output File Name? | Select this checkbox to sanitize the output file name by replacing invalid characters ( \ / : * ? " < > | % ) and non-printable control characters with an underscore. |
| Add File to Result | Check this option to add HTTP Response output file to workflow result |